const STORAGE_KEY = 'search-list';
export default {
    namespaced: true,
    state: () => {
        return {
            // 搜索历史
            searchData: uni.getStorageSync(STORAGE_KEY) || []
        }
    },
    mutations: {
        // 保存数据到Storage
        saveToStorage(state) {
            uni.setStorage({
                key: STORAGE_KEY,
                data: state.searchData,
            })
        },
        // 添加数据
        addSearchData(state, val) {
            if (!val) return
            /* 1.如果当前的搜索内容已存在，则原有的搜索内容需要被展示到搜索历史的头部，而不是新增一条搜索内容
         2.如果当前的搜索内容不存在，则新的搜索内容会被展示在搜索历史中
          */
            // 当前数据存在吗？存在则删除
            const index = state.searchData.findIndex(
                (item) => item === val
            );
            if (index != -1) {
                //  当前的搜索数据存在
                state.searchData.splice(index, 1);
            }
            // 把新的搜索内容添加到头部
            state.searchData.unshift(val);
            // 在vuex的模块中，通过this.commit函数调用mutation
            // this.commit函数结构一个字符串为当前mutation的路径 this.conmit('模块名/方法名)
            this.commit('search/saveToStorage')
        },
        // 删除指定数据
        removeSearchData(state, index) {
            state.searchData.splice(index, 1);
            this.commit('search/saveToStorage')
        },
        // 删除所有搜索数据
        removeAllSearchData(state) {
            state.searchData = [];
            this.commit('search/saveToStorage')
        }
    }
}